「SSHホスト鍵が変わってるよ!」と怒られたときの対処 #SSH

您所在的位置:网站首页 sshpass host key verification 「SSHホスト鍵が変わってるよ!」と怒られたときの対処 #SSH

「SSHホスト鍵が変わってるよ!」と怒られたときの対処 #SSH

2024-07-10 09:09| 来源: 网络整理| 查看: 265

SSHでは初回接続時に接続先ホストの公開鍵を保存しておき、次回接続時にホスト鍵を比較して前回と同じホストに接続したかを確認するような仕組みになっています。そのため、IPアドレスの振り直しやOS再インストールなどでホスト鍵が変わってしまった場合、次のようなエラーメッセージが出てSSH接続が失敗してしまいます。

$ ssh example.com @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the RSA key sent by the remote host is **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**. Please contact your system administrator. Add correct host key in /Users/hnw/.ssh/known_hosts to get rid of this message. Offending RSA key in /Users/hnw/.ssh/known_hosts:133 RSA host key for example.com has changed and you have requested strict checking. Host key verification failed.

この仕組みは中間者攻撃への対策として有用ですが、鍵の変更が意図通りであるような場合は大きなお世話だったりするわけです。

コマンド一発でknown_hostsファイルからホスト鍵を削除する

上記エラーへの対処としては$HOME/.ssh/known_hostsの該当行を削除すれば同じエラーは出なくなります。これはエディタで削除してもいいのですが、下記のようにssh-keygenコマンドの-Rオプションで消すこともできます。

$ ssh-keygen -R example.com # Host example.com found: line 133 type RSA /Users/hnw/.ssh/known_hosts updated. Original contents retained as /Users/hnw/.ssh/known_hosts.old

エディタでファイルを開いて該当行を探して…とやっていると案外時間がかかるので、コマンドライン一発で消せるのは便利です。

次のような形式でホスト名に加えてポート番号を指定することもできます。[]はシェルのワイルドカード文字ですので、クォーティングは必須です。

$ ssh-keygen -R '[example.com]:10022' 何度もSSH鍵の変更が起こるような場合

OSインストールを繰り返しているなどの理由で、特定ホストのホスト鍵が毎回変わるような状況では、上記コマンドを打つのさえ面倒だったりします。そのような場合は次のように$HOME/.ssh/configの設定でホスト鍵のチェックを無効化することができます。

Host 192.168.1.1 StrictHostKeyChecking no UserKnownHostsFile /dev/null

言うまでもありませんが、全ホストに対してこの設定を行うと中間者攻撃に対して脆弱になります。必要なときだけ特定ホストのみ設定すべきでしょう。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3